package com.rao.service;

import com.rao.entity.CourseSelection;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * 选课表 服务类
 * </p>
 *
 * @author rao3030
 * @since 2021-11-04
 */
public interface ICourseSelectionService extends IService<CourseSelection> {
    /**
     * 抢课，占有一个位置，确认这一步需要检索是否当前用户是否有位置
     * <p>
     * killId-seg-1 100  对应lock-key  killId-seg-1-lock
     * killId-seg-2 100  对应lock-key  killId-seg-2-lock
     * killId-seg-3 100  对应lock-key  killId-seg-3-lock
     * killId-seg-4 100  对应lock-key  killId-seg-4-lock
     */
    boolean grepLessByRedisSegment(Integer killId);

    /**
     * 数据库实现写热点分散思想
     *
     * @param killId
     * @return
     */
    int grepLessByDB(Integer killId);

    /**
     * 确认位置
     *
     * @param killId
     * @return
     */
    boolean ackTheLess(Integer killId);

    /**
     * 退课
     *
     * @param killId
     * @return
     */
    boolean dropTheLess(Integer killId);

    CourseSelection courseSelectionById(Integer id);
}
